Rules for integrands involving product logarithm functions

1.  ∫u(((c ProductLog[a+b x]))^p)dx

1.  ∫(((c ProductLog[a+b x]))^p)dx

1:  ∫(((c ProductLog[a+b x]))^p)dx  when  p<-1

Rule: If  p<-1, then

∫(((c ProductLog[a+b x]))^p)dx  ⟶  (((a+b x) (((c ProductLog[a+b x]))^p))/(b (p+1)))+(p/(c(p+1)))∫((((c ProductLog[a+b x]))^(p+1))/(1+ProductLog[a+b x]))dx

Program code:

Int[(c_.*ProductLog[a_.+b_.*x_])^p_,x_Symbol] :=
  (a+b*x)*(c*ProductLog[a+b*x])^p/(b*(p+1)) +
  p/(c*(p+1))*Int[(c*ProductLog[a+b*x])^(p+1)/(1+ProductLog[a+b*x]),x] /;
FreeQ[{a,b,c},x] && LtQ[p,-1]

2:  ∫(((c ProductLog[a+b x]))^p)dx  when  p≮-1

Derivation: Integration by parts

Rule: If  p≮-1, then

∫(((c ProductLog[a+b x]))^p)dx  ⟶  (((a+b x) (((c ProductLog[a+b x]))^p))/b)-p∫((((c ProductLog[a+b x]))^p)/(1+ProductLog[a+b x]))dx

Program code:

Int[(c_.*ProductLog[a_.+b_.*x_])^p_.,x_Symbol] :=
  (a+b*x)*(c*ProductLog[a+b*x])^p/b -
  p*Int[(c*ProductLog[a+b*x])^p/(1+ProductLog[a+b*x]),x] /;
FreeQ[{a,b,c},x] && Not[LtQ[p,-1]]

2:  ∫(((e+f x))^m) (((c ProductLog[a+b x]))^p)dx  when  m∈(SuperPlus[ℤ])

Derivation: Integration by substitution

Rule: If  m∈(SuperPlus[ℤ]), then

∫(((e+f x))^m) (((c ProductLog[a+b x]))^p)dx  ⟶  (1/(b^(m+1)))Subst[∫(((c ProductLog[x]))^p) ExpandIntegrand[(((b e-a f+f x))^m),x]dx,x,a+b x]

Program code:

Int[(e_.+f_.*x_)^m_.*(c_.*ProductLog[a_+b_.*x_])^p_.,x_Symbol] :=
  1/b^(m+1)*Subst[Int[ExpandIntegrand[(c*ProductLog[x])^p,(b*e-a*f+f*x)^m,x],x],x,a+b*x] /;
FreeQ[{a,b,c,e,f,p},x] && IGtQ[m,0]

2.  ∫u (((c ProductLog[a (x^n)]))^p)dx

1.  ∫(((c ProductLog[a (x^n)]))^p)dx

1:  ∫(((c ProductLog[a (x^n)]))^p)dx  when  n(p-1)==-1 ∨ (p-(1/2)∈ℤ ∧ n(p-(1/2))==-1)

Derivation: Integration by parts

Rule: If  n(p-1)==-1 ∨ (p-(1/2)∈ℤ ∧ n(p-(1/2))==-1), then

∫(((c ProductLog[a (x^n)]))^p)dx  ⟶  x (((c ProductLog[a (x^n)]))^p)-n p∫((((c ProductLog[a (x^n)]))^p)/(1+ProductLog[a (x^n)]))dx

Program code:

Int[(c_.*ProductLog[a_.*x_^n_])^p_.,x_Symbol] :=
  x*(c*ProductLog[a*x^n])^p -
  n*p*Int[(c*ProductLog[a*x^n])^p/(1+ProductLog[a*x^n]),x] /;
FreeQ[{a,c,n,p},x] && (EqQ[n*(p-1),-1] || IntegerQ[p-1/2] && EqQ[n*(p-1/2),-1])

2:  ∫(((c ProductLog[a (x^n)]))^p)dx  when  (p∈ℤ ∧ n(p+1)==-1) ∨ (p-(1/2)∈ℤ ∧ n(p+(1/2))==-1)

Rule: If  (p∈ℤ ∧ n(p+1)==-1) ∨ (p-(1/2)∈ℤ ∧ n(p+(1/2))==-1), then

∫(((c ProductLog[a (x^n)]))^p)dx  ⟶  ((x (((c ProductLog[a (x^n)]))^p))/(n p+1))+((n p)/(c (n p+1)))∫((((c ProductLog[a (x^n)]))^(p+1))/(1+ProductLog[a (x^n)]))dx

Program code:

Int[(c_.*ProductLog[a_.*x_^n_])^p_.,x_Symbol] :=
  x*(c*ProductLog[a*x^n])^p/(n*p+1) +
  n*p/(c*(n*p+1))*Int[(c*ProductLog[a*x^n])^(p+1)/(1+ProductLog[a*x^n]),x] /;
FreeQ[{a,c,n},x] && (IntegerQ[p] && EqQ[n*(p+1),-1] || IntegerQ[p-1/2] && EqQ[n*(p+1/2),-1])

3:  ∫(((c ProductLog[a (x^n)]))^p)dx  when  n∈(SuperMinus[ℤ])

Derivation: Integration by substitution

Basis: ∫f[x]dx==-Subst[∫((f[(1/x)])/(x^2))dx,x,(1/x)]

Rule: If  n∈(SuperMinus[ℤ]), then

∫(((c ProductLog[a (x^n)]))^p)dx  ⟶  -Subst[∫((((c ProductLog[a (x^(-n))]))^p)/(x^2))dx,x,(1/x)]

Program code:

Int[(c_.*ProductLog[a_.*x_^n_])^p_.,x_Symbol] :=
  -Subst[Int[(c*ProductLog[a*x^(-n)])^p/x^2,x],x,1/x] /;
FreeQ[{a,c,p},x] && ILtQ[n,0]

2.  ∫(x^m) (((c ProductLog[a (x^n)]))^p)dx

1:  ∫(x^m) (((c ProductLog[a (x^n)]))^p)dx  when  m≠-1 ∧ (p-(1/2)∈ℤ ∧ 2(p+((m+1)/n))∈(SuperPlus[ℤ]) ∨ p-(1/2)∉ℤ ∧ p+((m+1)/n)+1∈(SuperPlus[ℤ]))

Derivation: Integration by parts

Rule: If  m≠-1 ∧ (p-(1/2)∈ℤ ∧ 2(p+((m+1)/n))∈(SuperPlus[ℤ]) ∨ p-(1/2)∉ℤ ∧ p+((m+1)/n)+1∈(SuperPlus[ℤ])), then

∫(x^m) (((c ProductLog[a (x^n)]))^p)dx  ⟶  (((x^(m+1)) (((c ProductLog[a (x^n)]))^p))/(m+1))-((n p)/(m+1))∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(1+ProductLog[a (x^n)]))dx

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_.])^p_.,x_Symbol] :=
  x^(m+1)*(c*ProductLog[a*x^n])^p/(m+1) -
  n*p/(m+1)*Int[x^m*(c*ProductLog[a*x^n])^p/(1+ProductLog[a*x^n]),x] /;
FreeQ[{a,c,m,n,p},x] && NeQ[m,-1] &&
(IntegerQ[p-1/2] && IGtQ[2*Simplify[p+(m+1)/n],0] || Not[IntegerQ[p-1/2]] && IGtQ[Simplify[p+(m+1)/n]+1,0])

2:  ∫(x^m) (((c ProductLog[a (x^n)]))^p)dx  when  m==-1 ∨ (p-(1/2)∈ℤ ∧ p+((m+1)/n)-(1/2)∈(SuperMinus[ℤ])) ∨ (p-(1/2)∉ℤ ∧ p+((m+1)/n)∈(SuperMinus[ℤ]))

Rule: If  m==-1 ∨ (p-(1/2)∈ℤ ∧ p+((m+1)/n)-(1/2)∈(SuperMinus[ℤ])) ∨ (p-(1/2)∉ℤ ∧ p+((m+1)/n)∈(SuperMinus[ℤ])), then

∫(x^m) (((c ProductLog[a (x^n)]))^p)dx  ⟶  (((x^(m+1)) (((c ProductLog[a (x^n)]))^p))/(m+n p+1))+((n p)/(c(m+n p+1)))∫(((x^m) (((c ProductLog[a (x^n)]))^(p+1)))/(1+ProductLog[a (x^n)]))dx

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_.])^p_.,x_Symbol] :=
  x^(m+1)*(c*ProductLog[a*x^n])^p/(m+n*p+1) +
  n*p/(c*(m+n*p+1))*Int[x^m*(c*ProductLog[a*x^n])^(p+1)/(1+ProductLog[a*x^n]),x] /;
FreeQ[{a,c,m,n,p},x] &&
(EqQ[m,-1] || IntegerQ[p-1/2] && ILtQ[Simplify[p+(m+1)/n]-1/2,0] || Not[IntegerQ[p-1/2]] && ILtQ[Simplify[p+(m+1)/n],0])

3:  ∫(x^m) (((c ProductLog[a x]))^p)dx

Derivation: Algebraic simplification

Basis: 1==(1/(1+z))+(z/(1+z))

Rule:

∫(x^m) (((c ProductLog[a x]))^p)dx  ⟶  ∫(((x^m) (((c ProductLog[a x]))^p))/(1+ProductLog[a x]))dx+(1/c)∫(((x^m) (((c ProductLog[a x]))^(p+1)))/(1+ProductLog[a x]))dx

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_])^p_.,x_Symbol] :=
  Int[x^m*(c*ProductLog[a*x])^p/(1+ProductLog[a*x]),x] +
  1/c*Int[x^m*(c*ProductLog[a*x])^(p+1)/(1+ProductLog[a*x]),x] /;
FreeQ[{a,c,m},x]

4:  ∫(x^m) (((c ProductLog[a (x^n)]))^p)dx  when  n∈(SuperMinus[ℤ])∧ m∈ℤ ∧ m≠-1

Derivation: Integration by substitution

Basis: ∫f[x]dx==-Subst[∫((f[(1/x)])/(x^2))dx,x,(1/x)]

Rule: If  n∈(SuperMinus[ℤ])∧ m∈ℤ ∧ m≠-1, then

∫(x^m) (((c ProductLog[a (x^n)]))^p)dx  ⟶  -Subst[∫((((c ProductLog[a (x^(-n))]))^p)/(x^(m+2)))dx,x,(1/x)]

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_])^p_.,x_Symbol] :=
  -Subst[Int[(c*ProductLog[a*x^(-n)])^p/x^(m+2),x],x,1/x] /;
FreeQ[{a,c,p},x] && ILtQ[n,0] && IntegerQ[m] && NeQ[m,-1]

3.  ∫(u/(d+d ProductLog[a+b x]))dx

1:  ∫(1/(d+d ProductLog[a+b x]))dx

Rule:

∫(1/(d+d ProductLog[a+b x]))dx  ⟶  ((a+b x)/(b d ProductLog[a+b x]))

Program code:

Int[1/(d_+d_.*ProductLog[a_.+b_.*x_]),x_Symbol] :=
  (a+b*x)/(b*d*ProductLog[a+b*x]) /;
FreeQ[{a,b,d},x]

2.  ∫(((ProductLog[a+b x])^p)/(d+d ProductLog[a+b x]))dx

1.  ∫(((ProductLog[a+b x])^p)/(d+d ProductLog[a+b x]))dx  when  p>0

1:  ∫((ProductLog[a+b x])/(d+d ProductLog[a+b x]))dx

Derivation: Algebraic simplification

Basis: (z/(1+z))==1-(1/(1+z))

Rule:

∫((ProductLog[a+b x])/(d+d ProductLog[a+b x]))dx  ⟶  d x-∫(1/(d+d ProductLog[a+b x]))dx

Program code:

Int[ProductLog[a_.+b_.*x_]/(d_+d_.*ProductLog[a_.+b_.*x_]),x_Symbol] :=
  d*x - Int[1/(d+d*ProductLog[a+b*x]),x] /;
FreeQ[{a,b,d},x]

2:  ∫((((c ProductLog[a+b x]))^p)/(d+d ProductLog[a+b x]))dx  when  p>0

Rule: If  p>0, then

∫((((c ProductLog[a+b x]))^p)/(d+d ProductLog[a+b x]))dx  ⟶  ((c(a+b x) (((c ProductLog[a+b x]))^(p-1)))/(b d))-c p∫((((c ProductLog[a+b x]))^(p-1))/(d+d ProductLog[a+b x]))dx

Program code:

Int[(c_.*ProductLog[a_.+b_.*x_])^p_/(d_+d_.*ProductLog[a_.+b_.*x_]),x_Symbol] :=
  c*(a+b*x)*(c*ProductLog[a+b*x])^(p-1)/(b*d) -
  c*p*Int[(c*ProductLog[a+b*x])^(p-1)/(d+d*ProductLog[a+b*x]),x] /;
FreeQ[{a,b,c,d},x] && GtQ[p,0]

2.  ∫(((ProductLog[a+b x])^p)/(d+d ProductLog[a+b x]))dx  when  p<0

1:  ∫(1/(ProductLog[a+b x](d+d ProductLog[a+b x])))dx

Rule:

∫(1/(ProductLog[a+b x](d+d ProductLog[a+b x])))dx  ⟶  ((ExpIntegralEi[ProductLog[a+b x]])/(b d))

Program code:

Int[1/(ProductLog[a_.+b_.*x_]*(d_+d_.*ProductLog[a_.+b_.*x_])),x_Symbol] :=
  ExpIntegralEi[ProductLog[a+b*x]]/(b*d) /;
FreeQ[{a,b,d},x]

2.  ∫(1/(Sqrt[c ProductLog[a+b x]](d+d ProductLog[a+b x])))dx

1:  ∫(1/(Sqrt[c ProductLog[a+b x]](d+d ProductLog[a+b x])))dx  when  c>0

Rule: If  c>0, then

∫(1/(Sqrt[c ProductLog[a+b x]](d+d ProductLog[a+b x])))dx  ⟶  (((Sqrt[π c]) )/(b c d))Erfi[((Sqrt[c ProductLog[a+b x]])/(Sqrt[c]))]

Program code:

Int[1/(Sqrt[c_.*ProductLog[a_.+b_.*x_]]*(d_+d_.*ProductLog[a_.+b_.*x_])),x_Symbol] :=
  Rt[Pi*c,2]*Erfi[Sqrt[c*ProductLog[a+b*x]]/Rt[c,2]]/(b*c*d) /;
FreeQ[{a,b,c,d},x] && PosQ[c]

2:  ∫(1/(Sqrt[c ProductLog[a+b x]](d+d ProductLog[a+b x])))dx  when  c<0

Rule: If  c<0, then

∫(1/(Sqrt[c ProductLog[a+b x]](d+d ProductLog[a+b x])))dx  ⟶  (((Sqrt[-π c]) )/(b c d))Erf[((Sqrt[c ProductLog[a+b x]])/(Sqrt[-c]))]

Program code:

Int[1/(Sqrt[c_.*ProductLog[a_.+b_.*x_]]*(d_+d_.*ProductLog[a_.+b_.*x_])),x_Symbol] :=
  Rt[-Pi*c,2]*Erf[Sqrt[c*ProductLog[a+b*x]]/Rt[-c,2]]/(b*c*d) /;
FreeQ[{a,b,c,d},x] && NegQ[c]

3:  ∫((((c ProductLog[a+b x]))^p)/(d+d ProductLog[a+b x]))dx  when  p<-1

Rule: If  p<-1, then

∫((((c ProductLog[a+b x]))^p)/(d+d ProductLog[a+b x]))dx  ⟶  (((a+b x) (((c ProductLog[a+b x]))^p))/(b  d(p+1)))-(1/(c(p+1)))∫((((c ProductLog[a+b x]))^(p+1))/(d+d ProductLog[a+b x]))dx

Program code:

Int[(c_.*ProductLog[a_.+b_.*x_])^p_/(d_+d_.*ProductLog[a_.+b_.*x_]),x_Symbol] :=
  (a+b*x)*(c*ProductLog[a+b*x])^p/(b*d*(p+1)) -
  1/(c*(p+1))*Int[(c*ProductLog[a+b*x])^(p+1)/(d+d*ProductLog[a+b*x]),x] /;
FreeQ[{a,b,c,d},x] && LtQ[p,-1]

3:  ∫((((c ProductLog[a+b x]))^p)/(d+d ProductLog[a+b x]))dx

Rule:

∫((((c ProductLog[a+b x]))^p)/(d+d ProductLog[a+b x]))dx  ⟶  ((Gamma[p+1,-ProductLog[a+b x]] (((c ProductLog[a+b x]))^p))/(b d (((-ProductLog[a+b x]))^p)))

Program code:

Int[(c_.*ProductLog[a_.+b_.*x_])^p_./(d_+d_.*ProductLog[a_.+b_.*x_]),x_Symbol] :=
  Gamma[p+1,-ProductLog[a+b*x]]*(c*ProductLog[a+b*x])^p/(b*d*(-ProductLog[a+b*x])^p) /;
FreeQ[{a,b,c,d,p},x]

3:  ∫((((e+f x))^m)/(d+d ProductLog[a+b x]))dx  when  m∈(SuperPlus[ℤ])

Derivation: Integration by substitution

Rule: If  m∈(SuperPlus[ℤ]), then

∫((((e+f x))^m)/(d+d ProductLog[a+b x]))dx  ⟶  (1/(b^(m+1)))Subst[∫(1/(d+d ProductLog[x])) ExpandIntegrand[(((b e-a f+f x))^m),x]dx,x,a+b x]

Program code:

Int[(e_.+f_.*x_)^m_./(d_+d_.*ProductLog[a_+b_.*x_]),x_Symbol] :=
  1/b^(m+1)*Subst[Int[ExpandIntegrand[1/(d+d*ProductLog[x]),(b*e-a*f+f*x)^m,x],x],x,a+b*x] /;
FreeQ[{a,b,d,e,f},x] && IGtQ[m,0]

4:  ∫(((((e+f x))^m) (((c ProductLog[a+b x]))^p))/(d+d ProductLog[a+b x]))dx  when  m∈(SuperPlus[ℤ])

Derivation: Integration by substitution

Rule: If  m∈(SuperPlus[ℤ]), then

∫(((((e+f x))^m) (((c ProductLog[a+b x]))^p))/(d+d ProductLog[a+b x]))dx  ⟶  (1/(b^(m+1)))Subst[∫((((c ProductLog[x]))^p)/(d+d ProductLog[x])) ExpandIntegrand[(((b e-a f+f x))^m),x]dx,x,a+b x]

Program code:

Int[(e_.+f_.*x_)^m_.*(c_.*ProductLog[a_+b_.*x_])^p_./(d_+d_.*ProductLog[a_+b_.*x_]),x_Symbol] :=
  1/b^(m+1)*Subst[Int[ExpandIntegrand[(c*ProductLog[x])^p/(d+d*ProductLog[x]),(b*e-a*f+f*x)^m,x],x],x,a+b*x] /;
FreeQ[{a,b,c,d,e,f,p},x] && IGtQ[m,0]

4.  ∫(u/(d+d ProductLog[a (x^n)]))dx

1:  ∫(1/(d+d ProductLog[a (x^n)]))dx  when  n∈(SuperMinus[ℤ])

Derivation: Integration by substitution

Basis: ∫f[x]dx==-Subst[∫((f[(1/x)])/(x^2))dx,x,(1/x)]

Rule: If  n∈(SuperMinus[ℤ]), then

∫(1/(d+d ProductLog[a (x^n)]))dx  ⟶  -Subst[∫(1/((x^2) (d+d ProductLog[a (x^(-n))])))dx,x,(1/x)]

Program code:

Int[1/(d_+d_.*ProductLog[a_.*x_^n_]),x_Symbol] :=
  -Subst[Int[1/(x^2*(d+d*ProductLog[a*x^(-n)])),x],x,1/x] /;
FreeQ[{a,d},x] && ILtQ[n,0]

2.  ∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx

1:  ∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  when  n(p-1)==-1

Rule: If  n(p-1)==-1, then

∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  ⟶  ((c x (((c ProductLog[a (x^n)]))^(p-1)))/d)

Program code:

Int[(c_.*ProductLog[a_.*x_^n_.])^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  c*x*(c*ProductLog[a*x^n])^(p-1)/d /;
FreeQ[{a,c,d,n,p},x] && EqQ[n*(p-1),-1]

3:  ∫(((ProductLog[a (x^n)])^p)/(d+d ProductLog[a (x^n)]))dx  when  p∈ℤ ∧ n p==-1

Rule: If  p∈ℤ ∧ n p==-1, then

∫(((ProductLog[a (x^n)])^p)/(d+d ProductLog[a (x^n)]))dx  ⟶  (((a^p)ExpIntegralEi[-p ProductLog[a (x^n)]])/(d n))

Program code:

Int[ProductLog[a_.*x_^n_.]^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  a^p*ExpIntegralEi[-p*ProductLog[a*x^n]]/(d*n) /;
FreeQ[{a,d},x] && IntegerQ[p] && EqQ[n*p,-1]

4.  ∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  when  (1/n)∈ℤ ∧ p==(1/2)-(1/n)

1:  ∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  when  (1/n)∈ℤ ∧ p==(1/2)-(1/n) ∧ c n>0

Rule: If  (1/n)∈ℤ ∧ p==(1/2)-(1/n) ∧ c n>0, then

∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  ⟶  (((Sqrt[π c n]) )/(d n (a^(1/n))(c^(1/n))))Erfi[((Sqrt[c ProductLog[a (x^n)]])/(Sqrt[c n]))]

Program code:

Int[(c_.*ProductLog[a_.*x_^n_.])^p_/(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  Rt[Pi*c*n,2]/(d*n*a^(1/n)*c^(1/n))*Erfi[Sqrt[c*ProductLog[a*x^n]]/Rt[c*n,2]] /;
FreeQ[{a,c,d},x] && IntegerQ[1/n] && EqQ[p,1/2-1/n] && PosQ[c*n]

2:  ∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  when  (1/n)∈ℤ ∧ p==(1/2)-(1/n) ∧ c n<0

Rule: If  (1/n)∈ℤ ∧ p==(1/2)-(1/n) ∧ c n<0, then

∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  ⟶  ((Sqrt[-π c n])/(d n (a^(1/n))(c^(1/n)))) Erf[((Sqrt[c ProductLog[a (x^n)]])/(Sqrt[-c n]))]

Program code:

Int[(c_.*ProductLog[a_.*x_^n_.])^p_/(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  Rt[-Pi*c*n,2]/(d*n*a^(1/n)*c^(1/n))*Erf[Sqrt[c*ProductLog[a*x^n]]/Rt[-c*n,2]] /;
FreeQ[{a,c,d},x] && IntegerQ[1/n] && EqQ[p,1/2-1/n] && NegQ[c*n]

5:  ∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  when  n>0 ∧ n(p-1)+1>0

Rule: If  n>0 ∧ n(p-1)+1>0, then

∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  ⟶  ((c x (((c ProductLog[a (x^n)]))^(p-1)))/d)-c(n (p-1)+1)∫((((c ProductLog[a (x^n)]))^(p-1))/(d+d ProductLog[a (x^n)]))dx

Program code:

Int[(c_.*ProductLog[a_.*x_^n_.])^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  c*x*(c*ProductLog[a*x^n])^(p-1)/d -
  c*(n*(p-1)+1)*Int[(c*ProductLog[a*x^n])^(p-1)/(d+d*ProductLog[a*x^n]),x] /;
FreeQ[{a,c,d},x] && GtQ[n,0] && GtQ[n*(p-1)+1,0]

6:  ∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  when  n>0 ∧ n p+1<0

Rule: If  n>0 ∧ n p+1<0, then

∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  ⟶  ((x (((c ProductLog[a (x^n)]))^p))/(d(n p+1)))-(1/(c(n p+1)))∫((((c ProductLog[a (x^n)]))^(p+1))/(d+d ProductLog[a (x^n)]))dx

Program code:

Int[(c_.*ProductLog[a_.*x_^n_.])^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  x*(c*ProductLog[a*x^n])^p/(d*(n*p+1)) -
  1/(c*(n*p+1))*Int[(c*ProductLog[a*x^n])^(p+1)/(d+d*ProductLog[a*x^n]),x] /;
FreeQ[{a,c,d},x] && GtQ[n,0] && LtQ[n*p+1,0]

7:  ∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  when  n∈(SuperMinus[ℤ])

Derivation: Integration by substitution

Basis: ∫f[x]dx==-Subst[∫((f[(1/x)])/(x^2))dx,x,(1/x)]

Rule: If  n∈(SuperMinus[ℤ]), then

∫((((c ProductLog[a (x^n)]))^p)/(d+d ProductLog[a (x^n)]))dx  ⟶  -Subst[∫((((c ProductLog[a (x^(-n))]))^p)/((x^2) (d+d ProductLog[a (x^(-n))])))dx,x,(1/x)]

Program code:

Int[(c_.*ProductLog[a_.*x_^n_])^p_./(d_+d_.*ProductLog[a_.*x_^n_]),x_Symbol] :=
  -Subst[Int[(c*ProductLog[a*x^(-n)])^p/(x^2*(d+d*ProductLog[a*x^(-n)])),x],x,1/x] /;
FreeQ[{a,c,d,p},x] && ILtQ[n,0]

3.  ∫((x^m)/(d+d ProductLog[a x]))dx

1:  ∫((x^m)/(d+d ProductLog[a x]))dx  when  m>0

Rule: If  m>0, then

∫((x^m)/(d+d ProductLog[a x]))dx  ⟶  ((x^(m+1))/(d(m+1) ProductLog[a x]))-(m/(m+1))∫((x^m)/(ProductLog[a x] (d+d ProductLog[a x])))dx

Program code:

Int[x_^m_./(d_+d_.*ProductLog[a_.*x_]),x_Symbol] :=
  x^(m+1)/(d*(m+1)*ProductLog[a*x]) -
  m/(m+1)*Int[x^m/(ProductLog[a*x]*(d+d*ProductLog[a*x])),x] /;
FreeQ[{a,d},x] && GtQ[m,0]

2.  ∫((x^m)/(d+d ProductLog[a x]))dx  when  m<0

1:  ∫(1/(x(d+d ProductLog[a x])))dx

Rule:

∫(1/(x(d+d ProductLog[a x])))dx  ⟶  ((Log[ProductLog[a x]])/d)

Program code:

Int[1/(x_*(d_+d_.*ProductLog[a_.*x_])),x_Symbol] :=
  Log[ProductLog[a*x]]/d /;
FreeQ[{a,d},x]

2:  ∫((x^m)/(d+d ProductLog[a x]))dx  when  m<-1

Rule: If  m<-1, then

∫((x^m)/(d+d ProductLog[a x]))dx  ⟶  ((x^(m+1))/(d(m+1)))-∫(((x^m) ProductLog[a x])/(d+d ProductLog[a x]))dx

Program code:

Int[x_^m_./(d_+d_.*ProductLog[a_.*x_]),x_Symbol] :=
  x^(m+1)/(d*(m+1)) -
  Int[x^m*ProductLog[a*x]/(d+d*ProductLog[a*x]),x] /;
FreeQ[{a,d},x] && LtQ[m,-1]

3:  ∫((x^m)/(d+d ProductLog[a x]))dx  when  m∉ℤ

Rule: If  m∉ℤ, then

∫((x^m)/(d+d ProductLog[a x]))dx  ⟶  (((x^m) Gamma[m+1,-(m+1) ProductLog[a x]])/(a d(m+1) (e^(m ProductLog[a x])) (((-(m+1) ProductLog[a x]))^m)))

Program code:

Int[x_^m_./(d_+d_.*ProductLog[a_.*x_]),x_Symbol] :=
  x^m*Gamma[m+1,-(m+1)*ProductLog[a*x]]/
	(a*d*(m+1)*E^(m*ProductLog[a*x])*(-(m+1)*ProductLog[a*x])^m) /;
FreeQ[{a,d,m},x] && Not[IntegerQ[m]]

4.  ∫((x^m)/(d+d ProductLog[a (x^n)]))dx

1:  ∫(1/(x(d+d ProductLog[a (x^n)])))dx

Rule:

∫(1/(x(d+d ProductLog[a (x^n)])))dx  ⟶  ((Log[ProductLog[a (x^n)]])/(d n))

Program code:

Int[1/(x_*(d_+d_.*ProductLog[a_.*x_^n_.])),x_Symbol] :=
  Log[ProductLog[a*x^n]]/(d*n) /;
FreeQ[{a,d,n},x]

2:  ∫((x^m)/(d+d ProductLog[a (x^n)]))dx  when  m∈ℤ ∧ n∈(SuperMinus[ℤ])∧ m≠-1

Derivation: Integration by substitution

Basis: ∫f[x]dx==-Subst[∫((f[(1/x)])/(x^2))dx,x,(1/x)]

Rule: If  m∈ℤ ∧ n∈(SuperMinus[ℤ])∧ m≠-1, then

∫((x^m)/(d+d ProductLog[a (x^n)]))dx  ⟶  -Subst[∫(1/((x^(m+2)) (d+d ProductLog[a (x^(-n))])))dx,x,(1/x)]

Program code:

Int[x_^m_./(d_+d_.*ProductLog[a_.*x_^n_]),x_Symbol] :=
  -Subst[Int[1/(x^(m+2)*(d+d*ProductLog[a*x^(-n)])),x],x,1/x] /;
FreeQ[{a,d},x] && IntegerQ[m] && ILtQ[n,0] && NeQ[m,-1]

5.  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx

1:  ∫((((c ProductLog[a (x^n)]))^p)/(x(d+d ProductLog[a (x^n)])))dx

Rule:

∫((((c ProductLog[a (x^n)]))^p)/(x(d+d ProductLog[a (x^n)])))dx  ⟶  ((((c ProductLog[a (x^n)]))^p)/(d n p))

Program code:

Int[(c_.*ProductLog[a_.*x_^n_.])^p_./(x_*(d_+d_.*ProductLog[a_.*x_^n_.])),x_Symbol] :=
  (c*ProductLog[a*x^n])^p/(d*n*p) /;
FreeQ[{a,c,d,n,p},x]

2.  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  when  m≠-1

1:  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  when  m≠-1 ∧ m+n(p-1)==-1

Rule: If  m≠-1 ∧ m+n(p-1)==-1, then

∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  ⟶  ((c (x^(m+1)) (((c ProductLog[a (x^n)]))^(p-1)))/(d (m+1)))

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_.])^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  c*x^(m+1)*(c*ProductLog[a*x^n])^(p-1)/(d*(m+1)) /;
FreeQ[{a,c,d,m,n,p},x] && NeQ[m,-1] && EqQ[m+n*(p-1),-1]

2:  ∫(((x^m) ((ProductLog[a (x^n)])^p))/(d+d ProductLog[a (x^n)]))dx  when  p∈ℤ ∧ m+n p==-1

Rule: If  p∈ℤ ∧ m+n p==-1, then

∫(((x^m) ((ProductLog[a (x^n)])^p))/(d+d ProductLog[a (x^n)]))dx  ⟶  (((a^p)ExpIntegralEi[-p ProductLog[a (x^n)]])/(d n))

Program code:

Int[x_^m_.*ProductLog[a_.*x_^n_.]^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  a^p*ExpIntegralEi[-p*ProductLog[a*x^n]]/(d*n) /;
FreeQ[{a,d,m,n},x] && IntegerQ[p] && EqQ[m+n*p,-1]

3.  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  when  m≠-1 ∧ p-(1/2)∈ℤ ∧ m+n(p-(1/2))+1==0

1:  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  when  m≠-1 ∧ p-(1/2)∈ℤ ∧ m+n(p-(1/2))==-1 ∧ (c/(p-(1/2)))>0

Rule: If  m≠-1 ∧ p-(1/2)∈ℤ ∧ m+n(p-(1/2))==-1 ∧ (c/(p-(1/2)))>0, then

∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  ⟶  (((a^(p-(1/2)))(c^(p-(1/2))) )/(d n ))(Sqrt[((π c)/(p-(1/2)))])Erf[((Sqrt[c ProductLog[a (x^n)]])/(Sqrt[(c/(p-(1/2)))]))]

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_.])^p_/(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  a^(p-1/2)*c^(p-1/2)*Rt[Pi*c/(p-1/2),2]*Erf[Sqrt[c*ProductLog[a*x^n]]/Rt[c/(p-1/2),2]]/(d*n) /;
FreeQ[{a,c,d,m,n},x] && NeQ[m,-1] && IntegerQ[p-1/2] && EqQ[m+n*(p-1/2),-1] && PosQ[c/(p-1/2)]

2:  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  when  m≠-1 ∧ p-(1/2)∈ℤ ∧ m+n(p-(1/2))==-1 ∧ (c/(p-(1/2)))<0

Rule: If  m≠-1 ∧ p-(1/2)∈ℤ ∧ m+n(p-(1/2))==-1 ∧ (c/(p-(1/2)))<0, then

∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  ⟶  (((a^(p-(1/2)))(c^(p-(1/2))) )/(d n ))(Sqrt[-((π c)/(p-(1/2)))])Erfi[((Sqrt[c ProductLog[a (x^n)]])/(Sqrt[-(c/(p-(1/2)))]))]

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_.])^p_/(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  a^(p-1/2)*c^(p-1/2)*Rt[-Pi*c/(p-1/2),2]*Erfi[Sqrt[c*ProductLog[a*x^n]]/Rt[-c/(p-1/2),2]]/(d*n) /;
FreeQ[{a,c,d,m,n},x] && NeQ[m,-1] && IntegerQ[p-1/2] && EqQ[m+n*(p-1/2),-1] && NegQ[c/(p-1/2)]

4:  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  when  m≠-1 ∧ p+((m+1)/n)>1

Rule: If  m≠-1 ∧ p+((m+1)/n)>1, then

∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  ⟶  ((c (x^(m+1)) (((c ProductLog[a (x^n)]))^(p-1)))/(d(m+1)))-((c(m+n (p-1)+1))/(m+1))∫(((x^m) (((c ProductLog[a (x^n)]))^(p-1)))/(d+d ProductLog[a (x^n)]))dx

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_.])^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  c*x^(m+1)*(c*ProductLog[a*x^n])^(p-1)/(d*(m+1)) -
  c*(m+n*(p-1)+1)/(m+1)*Int[x^m*(c*ProductLog[a*x^n])^(p-1)/(d+d*ProductLog[a*x^n]),x] /;
FreeQ[{a,c,d,m,n,p},x] && NeQ[m,-1] && GtQ[Simplify[p+(m+1)/n],1]

5:  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  when  m≠-1 ∧ p+((m+1)/n)<0

Rule: If  m≠-1 ∧ p+((m+1)/n)<0, then

∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  ⟶  (((x^(m+1)) (((c ProductLog[a (x^n)]))^p))/(d(m+n p+1)))-((m+1)/(c(m+n p+1)))∫(((x^m) (((c ProductLog[a (x^n)]))^(p+1)))/(d+d ProductLog[a (x^n)]))dx

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_.])^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  x^(m+1)*(c*ProductLog[a*x^n])^p/(d*(m+n*p+1)) -
  (m+1)/(c*(m+n*p+1))*Int[x^m*(c*ProductLog[a*x^n])^(p+1)/(d+d*ProductLog[a*x^n]),x] /;
FreeQ[{a,c,d,m,n,p},x] && NeQ[m,-1] && LtQ[Simplify[p+(m+1)/n],0]

6:  ∫(((x^m) (((c ProductLog[a x]))^p))/(d+d ProductLog[a x]))dx  when  m≠-1

Rule: If  m≠-1, then

∫(((x^m) (((c ProductLog[a x]))^p))/(d+d ProductLog[a x]))dx  ⟶  (((x^m) Gamma[m+p+1,-(m+1) ProductLog[a x]] (((c ProductLog[a x]))^p))/(a d(m+1) (e^(m ProductLog[a x])) (((-(m+1) ProductLog[a x]))^(m+p))))

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_])^p_./(d_+d_.*ProductLog[a_.*x_]),x_Symbol] :=
  x^m*Gamma[m+p+1,-(m+1)*ProductLog[a*x]]*(c*ProductLog[a*x])^p/
	(a*d*(m+1)*E^(m*ProductLog[a*x])*(-(m+1)*ProductLog[a*x])^(m+p)) /;
FreeQ[{a,c,d,m,p},x] && NeQ[m,-1]

7:  ∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  when  m≠-1 ∧ m∈ℤ ∧ n∈(SuperMinus[ℤ])

Derivation: Integration by substitution

Basis: ∫f[x]dx==-Subst[∫((f[(1/x)])/(x^2))dx,x,(1/x)]

Rule: If  m≠-1 ∧ m∈ℤ ∧ n∈(SuperMinus[ℤ]), then

∫(((x^m) (((c ProductLog[a (x^n)]))^p))/(d+d ProductLog[a (x^n)]))dx  ⟶  -Subst[∫((((c ProductLog[a (x^(-n))]))^p)/((x^(m+2))(d+d ProductLog[a (x^(-n))])))dx,x,(1/x)]

Program code:

Int[x_^m_.*(c_.*ProductLog[a_.*x_^n_.])^p_./(d_+d_.*ProductLog[a_.*x_^n_.]),x_Symbol] :=
  -Subst[Int[(c*ProductLog[a*x^(-n)])^p/(x^(m+2)*(d+d*ProductLog[a*x^(-n)])),x],x,1/x] /;
FreeQ[{a,c,d,p},x] && NeQ[m,-1] && IntegerQ[m] && LtQ[n,0]

5:  ∫f[ProductLog[x]]dx

Author: Rob Corless 2009-07-10

Derivation:  Legendre substitution for inverse functions

Basis: f[ProductLog[x]]==(ProductLog[z]+1) (e^(ProductLog[z])) f[ProductLog[x]] ProductLog'[z]

Rule:

∫f[ProductLog[x]]dx  ⟶  Subst[∫(x+1) (e^x) f[x]dx,x,ProductLog[x]]

Program code:

Int[u_,x_Symbol] :=
  Subst[Int[SimplifyIntegrand[(x+1)*E^x*SubstFor[ProductLog[x],u,x],x],x],x,ProductLog[x]] /;
FunctionOfQ[ProductLog[x],u,x]